package xyz.ibenben.zhongdian.system.form;

import lombok.Getter;
import lombok.Setter;
import org.apache.commons.lang.StringUtils;
import tk.mybatis.mapper.entity.Example;
import tk.mybatis.mapper.entity.Example.Criteria;
import xyz.ibenben.zhongdian.system.entity.RentingHouse;
import xyz.ibenben.zhongdian.system.entity.enums.PayTypeEnum;

/**
 * 租赁房屋查询条件类
 * 提供了对价格，价格类型等字段的查询。
 * 并使用Example把所得到的结果整合为实例，最后通过服务实现类调用数据库查询结果
 *
 * @author chenjian
 * @since 2017年9月27日上午10:57:28
 */
@Setter
@Getter
public class RentingHouseForm extends SearchForm{
	private static final long serialVersionUID = 2520767505983089325L;
	/* 价格字符串 */
	private static final String PRICESTRING = "price";

	/* 价格 */
	protected Integer price;

	/* 价格类型 */
	protected PayTypeEnum priceType;

	/* 联系电话 */
	protected String phone;

	/* 标题 */
	protected String title;

	/**
	 * 构造条件实例
	 * @return 返回值
	 */
	@Override
	public Example buildSearchCommond() {
		Example example = new Example(RentingHouse.class);
		Criteria criteria = example.createCriteria();
		if(StringUtils.isNotBlank(title)){
			//按照title模糊查询
			criteria.andLike("title", "%" + title + "%");
		}

		if(null != price){
			if(price == 1){
				//price 为 1 查询 500 - 1000
				criteria.andBetween(PRICESTRING, 500, 1000);
			}else if(price == 2){
				//price 为 2 查询 1000 - 2000
				criteria.andBetween(PRICESTRING, 1000, 2000);
			}else if(price == 3){
				//price 为 3 查询 2000 - 5000
				criteria.andBetween(PRICESTRING, 2000, 5000);
			}else{
				//price 为 4 查询 price > 5000
				criteria.andGreaterThanOrEqualTo(PRICESTRING, 5000);
			}
		}
		if(null != priceType){
			//按照价格类型精确查找
			criteria.andEqualTo("priceType", priceType);
		}
		if(StringUtils.isNotBlank(phone)){
			//精确查找电话
			criteria.andEqualTo("phone", phone);
		}
		return example;
	}

}
